package mbean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import armazenamento.DbCRUD;
import modelo.Anuncio;
import modelo.Usuario;

@ManagedBean(name="usuarioBean")
@SessionScoped

public class GerenciadorAplicaoBean {
	private Usuario usuario=new Usuario();
	private Usuario novo=new Usuario();
	private Anuncio anuncio=new Anuncio();
	private Anuncio anuncioAlterado=new Anuncio();
	private DbCRUD dbCRUD;
	private String confirmaSenha;
	private String detalhes;
	private String resumo;
	private List<Anuncio> listaAnuncios=new ArrayList<Anuncio>();
	private String retornoDetalhes;
	public GerenciadorAplicaoBean(){
		super();
		dbCRUD=DbCRUD.getInstancia();
		
		/*Usuario u=new Usuario();
		u.setNome("Ailson");
		u.setLogin("ailson.vasconcelos");
		u.setSenha("123");
		
		Anuncio a1=new Anuncio();
		a1.setResumo("teste1");
		a1.setDetalhes("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
		a1.setUsuario(u);
		u.getAnuncios().add(a1);
		
		Anuncio a2=new Anuncio();
		a2.setResumo("teste2");
		a2.setDetalhes("YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
		a2.setUsuario(u);
		u.getAnuncios().add(a2);
		
		this.dbCRUD.cadastrarUsuario(u);*/
	}
	
	public String autenticar(){
		FacesContext contexto=FacesContext.getCurrentInstance();
		FacesMessage facesMessage=new FacesMessage("Login ou Senha Incorretos.");
		
		Usuario usuario;
		
		usuario=dbCRUD.getUsuario(this.usuario.getLogin());
		
		if(usuario!=null && usuario.getSenha().equals(this.usuario.getSenha())){
			this.usuario=usuario;
			return "principal";
		}else{ 
			contexto.addMessage(null, facesMessage);
			return "login";  
		}
		
		
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Usuario getNovo() {
		return novo;
	}

	public void setNovo(Usuario novo) {
		this.novo = novo;
	}
	public String getConfirmaSenha() {
		return confirmaSenha;
	}

	public void setConfirmaSenha(String confirmaSenha) {
		this.confirmaSenha = confirmaSenha;
	}
	
	public String getDetalhes() {
		return detalhes;
	}

	public void setDetalhes(String detalhes) {
		this.detalhes = detalhes;
	}
	
	public String getResumo() {
		return resumo;
	}

	public void setResumo(String resumo) {
		this.resumo = resumo;
	}

	public String mostrarDetalhes(){
		return "detalhes";
	}
	
	public String getRetornoDetalhes() {
		return retornoDetalhes;
	}

	public void setRetornoDetalhes(String retornoDetalhes) {
		this.retornoDetalhes = retornoDetalhes;
	}

	public Anuncio getAnuncioAlterado() {
		return anuncioAlterado;
	}

	public void setAnuncioAlterado(Anuncio anuncioAlterado) {
		this.anuncioAlterado = anuncioAlterado;
	}

	public String cadastrarUsuario(){
		FacesContext contexto=FacesContext.getCurrentInstance();
		FacesMessage facesMessage;
		if(this.novo.getSenha().equals(this.confirmaSenha)){
			if(this.dbCRUD.cadastrarUsuario(novo)){
				facesMessage=new FacesMessage("Usuario Cadastrado.");
			}else{
				facesMessage=new FacesMessage("Já existe um usuário com este login");
			}
			contexto.addMessage(null,facesMessage);
			this.novo=new Usuario();
			return "login";
		}else{
			facesMessage=new FacesMessage("Senha difere de confirmação de senha.");
			contexto.addMessage(null,facesMessage);
			this.novo=new Usuario();
			return "cadastro";
		}
	}

	public Anuncio getAnuncio() {
		return anuncio;
	}

	public void setAnuncio(Anuncio anuncio) {
		this.anuncio = anuncio;
	}
	public String excluirAnuncio(){
		this.dbCRUD.excluirAnuncio(this.anuncio);
		this.anuncio=new Anuncio();
		return "principal";
	}
	
	public String cadastrarAnuncio(){
		FacesContext contexto=FacesContext.getCurrentInstance();
		this.anuncio.setUsuario(this.usuario);
		if(this.dbCRUD.cadastrarAnuncio(this.anuncio)){
			FacesMessage facesMessage=new FacesMessage("Anuncio Cadastrado");
			contexto.addMessage(null, facesMessage);
			this.anuncio=new Anuncio();
			return "cadastraranuncio";
		}
		FacesMessage facesMessage=new FacesMessage("Não foi possível cadastrar o anuncio");
		contexto.addMessage(null, facesMessage);
		this.anuncio=new Anuncio();
		return "cadastraranuncio";
	}
	public String alterarAnuncio(){
		FacesContext contexto=FacesContext.getCurrentInstance();
		this.anuncio.setUsuario(this.usuario);
		if(this.dbCRUD.alterarAnuncio(this.anuncio,this.anuncioAlterado)){
			FacesMessage facesMessage=new FacesMessage("Anuncio Alterado");
			contexto.addMessage(null, facesMessage);
			this.anuncioAlterado=new Anuncio();
			return "principal";
		}
		FacesMessage facesMessage=new FacesMessage("Não foi possível alterar o anuncio");
		contexto.addMessage(null, facesMessage);
		this.anuncioAlterado=new Anuncio();
		return "principal";
	}

	public List<Anuncio> getListaAnuncios() {
		this.listaAnuncios=this.dbCRUD.listarAnuncios();
		return this.listaAnuncios;
	}
	public String sair(){
		this.usuario=new Usuario();
		return "sair";
	}
}
